/**
 * 文件名：WidgetApplication.java
 *
 * 版本信息：v1.0
 * 日期：2013-6-22
 * Copyright  Corporation 2013 
 * 版权所有
 *
 */

package com.foreveross.bsl.mam.model.application;

import java.util.List;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.foreveross.bsl.mam.model.application.vo.WidgetSnapshotVO;

/**
 * 此类描述的是：模块接口定义
 * 
 * @author: panhm@foreveross.com
 * @version: 2013-6-22 下午2:46:04
 */
@Path(value = "/widgetSnapshot")
public interface WidgetSnapshotApplication {
	/**
	 * 此方法描述的是：保存一个实体对象
	 * 
	 * @author: panhm@foreveross.com
	 * @version: 2013-6-19 下午3:05:19
	 */
	@POST
	@Path("/snapshot")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	public WidgetSnapshotVO saveEntity(WidgetSnapshotVO entity);

	/**
	 * 此方法描述的是：更新实体对象
	 * 
	 * @author: panhm@foreveross.com
	 * @version: 2013-6-19 下午3:05:31
	 */
	@PUT
	@Path("/snapshot")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	public WidgetSnapshotVO updateEntity(WidgetSnapshotVO entity);

	/**
	 * 此方法描述的是：删除一个实体对象
	 * 
	 * @author: panhm@foreveross.com
	 * @version: 2013-6-19 下午3:05:42
	 */
	@DELETE
	@Path("/snapshot/{id}")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	public void deleteEntity(@PathParam("id") String id);

	/**
	 * 此方法描述的是：获取一个实体对象
	 * 
	 * @author: panhm@foreveross.com
	 * @version: 2013-6-19 下午3:05:55
	 */
	@GET
	@Path("/snapshot/{id}")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	public WidgetSnapshotVO getEntity(@PathParam("id") String id);

	/**
	 * 此方法描述的是：根据版本id查询快照
	 * 
	 * @author: panhm@foreveross.com
	 * @version: 2013-6-19 下午3:06:13
	 */
	@GET
	@Path("/list")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	public List<WidgetSnapshotVO> findByVersionId(
			@QueryParam("versionId") String versionId);

	/**
	 * 此方法描述的是：分页获取实体对象
	 * 
	 * @author: panhm@foreveross.com
	 * @version: 2013-6-19 下午3:06:26
	 */
	@GET
	@Path("/all")
	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
	public List<WidgetSnapshotVO> findAll();

}
